package Thread;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 邓大帅
 * Date: 2024-01-24
 * Time: 9:26
 */
public class ThreadDemo2 {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
//            currentThread 是获取当前线程的实例
//            这里获取的就是thread
//            isInterrupted 就是thread对象中自带的一个标志位
            while (!Thread.currentThread().isInterrupted()) {
                System.out.println("hello world");
                try {
                    Thread.sleep(1000);
//                    当sleep被唤醒时，会重置中断标志位，设置回false 这种设定可以方便程序员对中断进行多样化的处理，可以不理会，可以滞后中断，也可以立即中断
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break;//这里处理异常时直接跳出循环，这时候的中断标志位已经被重置
                }
            }
        });
        thread.start();
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        thread.interrupt();//interrupt方法的作用：1.将中断标志位设置成true 2.如果该线程正在阻塞，将该线程唤醒
    }
}
